package com.gp.learn.ssm.base.core.mybaits.base.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gp.learn.ssm.base.core.mybaits.Entity.EntityMap;
import com.gp.learn.ssm.base.core.mybaits.customwrapper.CriteriaQuery;
import com.gp.learn.ssm.base.core.mybaits.model.*;

import java.io.Serializable;
import java.util.List;

/**
 * 对MyBaitsPlus IService接口进行扩展
 */
public interface IBaseService<T> extends IService<T> {

    /**
     * 自定义分页(xml中配置外键链接查询)
     *  @param pageModel
     *  @return
     */
    ResultBody pageList(PageModel pageModel);

    /**
     * 查询列表
     *
     * @param listModel
     * @return
     */
    ResultBody listEntityMap(ListModel listModel);

    /**
     * 自定义查询单个实体(返回自定义Map类型,便于枚举转换)
     */
    ResultBody get(GetModel model);

    ResultBody add(SaveModel model);

    /**
     * 自定义更新带扩展事件
     */
    ResultBody edit(UpdateModel updateModel);

    ResultBody delete(DeleteModel model);

    List<EntityMap> selectEntityMap(CriteriaQuery<?> cq);

    EntityMap findOne(CriteriaQuery cq);

    T getByProperty(String propertyName, Object value);

    EntityMap findOne(Serializable id);


}